package com.ruoyi.payable.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 应付款明细对象 erp_accounts_payable
 * 
 * @author ruoyi
 * @date 2025-07-22
 */
public class ErpAccountsPayable extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 单据类型（采购入库/退货等） */
    @Excel(name = "单据类型", readConverterExp = "采=购入库/退货等")
    private String documentType;

    /** 入库单号 */
    @Excel(name = "入库单号")
    private String entryCode;

    /** 单据日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "单据日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date documentDate;

    /** 供应商名称 */
    @Excel(name = "供应商名称")
    private String supplierName;

    /** 数量 */
    @Excel(name = "数量")
    private BigDecimal quantity;

    /** 付款方式（现金/转账/票据） */
    @Excel(name = "付款方式", readConverterExp = "现=金/转账/票据")
    private String paymentMethod;

    /** 税额 */
    @Excel(name = "税额")
    private BigDecimal taxAmount;

    /** 应付金额 */
    @Excel(name = "应付金额")
    private BigDecimal payableAmount;

    /** 已付金额 */
    @Excel(name = "已付金额")
    private BigDecimal paidAmount;

    /** 应付余额 */
    @Excel(name = "应付余额")
    private BigDecimal balanceAmount;

    /** 状态（已结清/未付款/部分付款） */
    private String status;

    /** 创建时间 */
    private Date createdAt;

    /** 更新时间 */
    private Date updatedAt;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setDocumentType(String documentType) 
    {
        this.documentType = documentType;
    }

    public String getDocumentType() 
    {
        return documentType;
    }

    public void setEntryCode(String entryCode) 
    {
        this.entryCode = entryCode;
    }

    public String getEntryCode() 
    {
        return entryCode;
    }

    public void setDocumentDate(Date documentDate) 
    {
        this.documentDate = documentDate;
    }

    public Date getDocumentDate() 
    {
        return documentDate;
    }

    public void setSupplierName(String supplierName) 
    {
        this.supplierName = supplierName;
    }

    public String getSupplierName() 
    {
        return supplierName;
    }

    public void setQuantity(BigDecimal quantity) 
    {
        this.quantity = quantity;
    }

    public BigDecimal getQuantity() 
    {
        return quantity;
    }

    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }

    public void setTaxAmount(BigDecimal taxAmount) 
    {
        this.taxAmount = taxAmount;
    }

    public BigDecimal getTaxAmount() 
    {
        return taxAmount;
    }

    public void setPayableAmount(BigDecimal payableAmount) 
    {
        this.payableAmount = payableAmount;
    }

    public BigDecimal getPayableAmount() 
    {
        return payableAmount;
    }

    public void setPaidAmount(BigDecimal paidAmount) 
    {
        this.paidAmount = paidAmount;
    }

    public BigDecimal getPaidAmount() 
    {
        return paidAmount;
    }

    public void setBalanceAmount(BigDecimal balanceAmount) 
    {
        this.balanceAmount = balanceAmount;
    }

    public BigDecimal getBalanceAmount() 
    {
        return balanceAmount;
    }

    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    public void setCreatedAt(Date createdAt) 
    {
        this.createdAt = createdAt;
    }

    public Date getCreatedAt() 
    {
        return createdAt;
    }

    public void setUpdatedAt(Date updatedAt) 
    {
        this.updatedAt = updatedAt;
    }

    public Date getUpdatedAt() 
    {
        return updatedAt;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("documentType", getDocumentType())
            .append("entryCode", getEntryCode())
            .append("documentDate", getDocumentDate())
            .append("supplierName", getSupplierName())
            .append("quantity", getQuantity())
            .append("paymentMethod", getPaymentMethod())
            .append("taxAmount", getTaxAmount())
            .append("payableAmount", getPayableAmount())
            .append("paidAmount", getPaidAmount())
            .append("balanceAmount", getBalanceAmount())
            .append("status", getStatus())
            .append("remark", getRemark())
            .append("createdAt", getCreatedAt())
            .append("updatedAt", getUpdatedAt())
            .toString();
    }
}
